﻿@using Ext.Net.MVC;
@using Ext.Net;
@using Social.Game.DAL;
@model SocialGame.Models.QuestionModel
@{
    ViewBag.Title = "List";
    Layout = "~/Views/Shared/_BaseLayout.cshtml";
}
@section headtag
{
    <script>
        var reloadAnwser = function (questId) {
            var store = App.grdAnwser.store;
            store.getProxy().extraParams = {
                QuestionID: questId
            };
            store.load();
        }

        var fieldRender = function (value) {
            if (!Ext.isEmpty(value)) {
                return value.FieldName;
            }

            return value;
        };

        var boolRender = function (value) {            
            if (!Ext.isEmpty(value)) {
                return (value == 1) ? 'Đúng' : 'Sai';
            }
            return 'Sai';
        };

        var questTypeRender = function (value) {
            if (!Ext.isEmpty(value)) {
                return value.QuestionName;
            }

            return value;
        };
    </script>
}
@section content{
    @(
 Html.X().Viewport().Layout(LayoutType.Fit).
 Items(
  Html.X().Panel()
        .Frame(true)
        .Title("Danh sách câu hỏi")
        .Layout(LayoutType.Border)
        .DefaultAnchor("100%")
        .Items(
        Html.X().GridPanel()
            .Frame(false)
            .Region(Region.North)
            .DefaultAnchor("50%")
            .Height(320)
            .ID("grdQuestion")
            .Store(
                Html.X().StoreForModel()
                    .Proxy(Html.X().AjaxProxy()
                                .Url(Url.Action("GetQuestions"))
                        .Reader(Html.X().JsonReader().Root("data"))
                    )
                    .RemoteSort(true)
                    .PageSize(10)
                    .SorterFor(Model, m => m.ID, Ext.Net.SortDirection.ASC)
            )
            .ColumnModel(
                 Html.X().CommandColumn()
                        .Width(60)
                        .Commands(
                            Html.X().GridCommand()
                                .CommandName("Delete")
                                .Icon(Icon.Delete)
                                .ToolTip(tt => tt.Text = "Delete"),
                            Html.X().GridCommand()
                                .CommandName("Edit")
                                .Icon(Icon.NoteEdit)
                                .ToolTip(tt => tt.Text = "Edit")
                        ).DirectEvents(de =>
                        {
                            de.Command.Url = Url.Action("EditCommand");
                            de.Command.EventMask.ShowMask = true;
                            de.Command.Confirmation.BeforeConfirm = "return (command=='Delete')";
                            de.Command.Confirmation.ConfirmRequest = true;
                            de.Command.Confirmation.Message = "Bạn có chắc chắn muốn xóa câu hỏi?";
                            de.Command.ExtraParams.Add(new Ext.Net.Parameter()
                            {
                                Name = "QuestionID",
                                Value = "record.data.ID",
                                Mode = ParameterMode.Raw
                            });
                            de.Command.ExtraParams.Add(new Ext.Net.Parameter()
                           {
                               Name = "command",
                               Value = "command",
                               Mode = ParameterMode.Raw
                           });
                            de.Command.Success = "App.grdQuestion.store.load()";
                        }),
                Html.X().Column().DataIndex(Model, m => m.ID).Text("ID").Width(40),
                Html.X().Column().DataIndex(Model, m => m.QuestType).Text("Loại câu hỏi").Width(95).Renderer("questTypeRender"),
                Html.X().Column().DataIndex(Model, m => m.QuestTitle).Text("Tiêu đề").Width(100),
                Html.X().Column().DataIndex(Model, m => m.QuestContent).Text("Nội dung").Width(130),
                Html.X().Column().DataIndex(Model, m => m.QuestLevel).Text("Cấp dộ").Width(50),             
                Html.X().Column().DataIndex(Model, m => m.Field).Text("Chủ đề").Width(95).Renderer("fieldRender"),
                Html.X().CheckColumn().DataIndex(Model, m => m.State).Text("Trạng thái").Width(90),
                Html.X().Column().DataIndex(Model, m => m.Image1).Text("Ảnh 1").Width(120),
                Html.X().Column().DataIndex(Model, m => m.Image1).Text("Ảnh 2").Width(120),
                Html.X().Column().DataIndex(Model, m => m.Image3).Text("Ảnh 3").Width(90),
                Html.X().Column().DataIndex(Model, m => m.Image4).Text("Ảnh 4").Width(90)
            )
            .Listeners(ls =>
                          ls.SelectionChange.Handler = "reloadAnwser(selected[0].data.ID);"
             )
            .BottomBar(
                Html.X().PagingToolbar()
                    .DisplayInfo(true)
                    .DisplayMsg("Hiển thị người dùng {0} - {1} of {2}")
                    .EmptyMsg("Chưa có người dùng nào")
            ).TopBar(
                Html.X().Toolbar()
                    .Items(
                        Html.X().Button()
                        .Text("Tạo mới")
                        .Icon(Ext.Net.Icon.Add)
                       .DirectEvents(de =>
                       {
                           de.Click.Url = Url.Action("Create");

                           de.Click.EventMask.ShowMask = true;
                       }),
                        Html.X().ToolbarFill()
                    )
            ),
            Html.X().GridPanel()
                    .Frame(false)
                    .Region(Region.Center)
                    .Title("Danh sách câu trả lời")
                    .DefaultAnchor("50%")
                    .Split(true)
                    .ID("grdAnwser")
                    .Store(
                        Html.X().StoreFor<Social.Game.DAL.Answer>()
                            .Proxy(Html.X().AjaxProxy()
                                .Url(Url.Action("GetAnwser"))
                                .Reader(Html.X().JsonReader().Root("data")
                                )
                            )
                            .RemoteSort(true)
                            .SorterFor(Model, m => m.ID, Ext.Net.SortDirection.ASC)
                            .PageSize(20)
                    )
                    .ColumnModel(
                         Html.X().CommandColumn()
                                .Width(60)
                                .Commands(
                                    Html.X().GridCommand()
                                    .CommandName("Delete")
                                    .Icon(Icon.Delete)
                                    .ToolTip(tt => tt.Text = "Delete"),
                                    Html.X().GridCommand()
                                    .CommandName("Edit")
                                    .Icon(Icon.NoteEdit)
                                    .ToolTip(tt => tt.Text = "Edit")
                                ).DirectEvents(de =>
                                {
                                    de.Command.Url = Url.Action("EditAnswerCommand");
                                    de.Command.EventMask.ShowMask = true;
                                    de.Command.Confirmation.BeforeConfirm = "return (command=='Delete')";
                                    de.Command.Confirmation.ConfirmRequest = true;
                                    de.Command.Confirmation.Message = "Bạn có chắc chắn muốn xóa câu trả lời?";
                                    de.Command.ExtraParams.Add(new Ext.Net.Parameter()
                                    {
                                        Name = "ID",
                                        Value = "record.data.ID",
                                        Mode = ParameterMode.Raw
                                    });
                                    de.Command.ExtraParams.Add(new Ext.Net.Parameter()
                                    {
                                        Name = "command",
                                        Value = "command",
                                        Mode = ParameterMode.Raw
                                    });
                                    de.Command.Success = "App.grdAnwser.store.load()";
                                }),
                        Html.X().Column().DataIndex("ID").Text("ID").Width(40),
                        Html.X().Column().DataIndex("AnswerSign").Text("Ký hiệu").Width(50),
                        Html.X().Column().DataIndex("Contents").Text("Nội dung").Width(250),
                        Html.X().Column().DataIndex("Hint").Text("Nhận xét").Width(250),
                        Html.X().Column().DataIndex("Point").Text("Điểm").Width(100),
                        Html.X().Column().DataIndex("AnswerValue").Text("Đúng/Sai").Width(80).Renderer("boolRender"),
                        Html.X().Column().DataIndex("Image").Text("Ảnh").Width(50)
                    )

                    .TopBar(
                        Html.X().Toolbar()
                            .Items(
                                Html.X().Button()
                                .Text("Tạo mới")
                                .Icon(Ext.Net.Icon.Add)
                               .DirectEvents(de =>
                               {
                                   de.Click.Url = Url.Action("CreateAnswer");
                                   de.Click.Method = HttpMethod.GET;
                                   de.Click.ExtraParams.Add(new Ext.Net.Parameter()
                                   {
                                       Name = "QuestionID",
                                       Value = "App.grdQuestion.getSelectionModel().getSelection()[0].data.ID",
                                       Mode = ParameterMode.Raw
                                   });
                                   de.Click.EventMask.ShowMask = true;
                               }),
                                Html.X().ToolbarFill()
                            )
                    )
)))
}
